package prove;

public class Mazzo {

    private Carta[] mazzo = new Carta[40];
    private int[] carte = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40};
    private Carta[] mischia = new Carta[40];

    public Mazzo() {
        for (int i = 0; i < 40; i++) {
            String seme;
            int num;
            if (i < 10) {
                seme = "Bastoni";
                num = i + 1;
            } else if (i < 20) {
                seme = "Denari";
                num = i + 1 - 10;
            } else if (i < 30) {
                seme = "Coppe";
                num = i + 1 - 20;
            } else {
                seme = "Spade";
                num = i + 1 - 30;
            }
            this.mazzo[i] = new Carta();
            this.mischia[i] = new Carta();
            this.mazzo[i].setSeme(seme);
            this.mazzo[i].setValore(num);
        }
    }

    public void shuffle() {
        int[] card;
        for (int i = 0; i < 40; i++) {
            card = new int[40 - i];
            int num=0;
            for (int id = 0; id < this.carte.length; id++) {
                if (this.carte[id] != 0) {
                    card[num] = this.carte[id];
                    num++;
                }
            }
            double rand = Math.random();
            rand = rand * card.length;
            int randint = (int) rand;
            int pos = card[randint];
            pos--;
            this.carte[pos] = 0;
            this.mischia[i].setValore(this.mazzo[pos].getValore());
            this.mischia[i].setSeme(this.mazzo[pos].getSeme());
        }
    }

    public Carta[] getGiocatore(int pNumeroGiocatore) {
        Carta[] giocatore = new Carta[10];
        if (pNumeroGiocatore > 0 && pNumeroGiocatore < 5) {
            if (pNumeroGiocatore == 1) {
                for (int i = 0; i < 10; i++) {
                    int num = i;
                    giocatore[i] = new Carta();
                    giocatore[i].setSeme(this.mischia[num].getSeme());
                    giocatore[i].setValore(this.mischia[num].getValore());
                }
            } else if (pNumeroGiocatore == 2) {
                for (int i = 0; i < 10; i++) {
                    int num = i + 10;
                    giocatore[i] = new Carta();
                    giocatore[i].setSeme(this.mischia[num].getSeme());
                    giocatore[i].setValore(this.mischia[num].getValore());
                }
            } else if (pNumeroGiocatore == 3) {
                for (int i = 0; i < 10; i++) {
                    int num = i + 20;
                    giocatore[i] = new Carta();
                    giocatore[i].setSeme(this.mischia[num].getSeme());
                    giocatore[i].setValore(this.mischia[num].getValore());
                }
            } else {
                for (int i = 0; i < 10; i++) {
                    int num = i + 30;
                    giocatore[i] = new Carta();
                    giocatore[i].setSeme(this.mischia[num].getSeme());
                    giocatore[i].setValore(this.mischia[num].getValore());
                }
            }
        }
        return giocatore;
    }
}
